# 作者: Mark
# 2023年03月08日22时28分34秒
from socket import *
import struct

#初始化
tcp_server_socket = socket(AF_INET, SOCK_STREAM)
#重用对应地址和端口
tcp_server_socket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
#本地IP地址和端口
addr = ('',2000)
#绑定信息
tcp_server_socket.bind(addr)
#使用listen将套接字变为主动的，这样就可以接受别人的连接了
tcp_server_socket.listen(10)
#
client_socket,clientAddr = tcp_server_socket.accept()
#连接上 打印
print(clientAddr)

#发文件
file_name = "Readom"
#先发报文头——”文件名“的长度
b_file_name = file_name.encode('utf8')#转码
client_socket.send(struct.pack('I',len(b_file_name)))   #  打包 发火车头，4个字节，表文件名的长度
client_socket.send(b_file_name)#发车厢，是文件名

#发文件内容
file = open('Readom','rb') #打开文件
file_content = file.read() #读取文件
client_socket.send(struct.pack('I',len(file_content))) #发火车头，4个字节，包含的是文件内容的长度
client_socket.send(file_content) #车厢是文件内容
file.close()
#关闭
client_socket.close() #关闭和客户端的连接
tcp_server_socket.close()  #关闭套接字通信进程
